Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
prosemirror-model
Advanced tools
The prosemirror-model package is a part of the ProseMirror toolkit, which provides a powerful, flexible, and customizable framework for building rich text editors. The prosemirror-model package specifically deals with the document model, which includes defining schemas, creating and manipulating documents, and working with nodes and marks.
Defining a Schema
This feature allows you to define a schema for your document. A schema specifies the types of nodes and marks that can appear in the document, as well as their attributes and how they should be serialized to and from DOM.
const { Schema } = require('prosemirror-model');
const mySchema = new Schema({
nodes: {
doc: { content: 'block+' },
paragraph: { content: 'text*', toDOM: () => ['p', 0] },
text: { inline: true }
},
marks: {
strong: { toDOM: () => ['strong', 0] }
}
});
Creating a Document
This feature allows you to create a document using the schema you defined. The document is created from a JSON representation that matches the schema.
const { Node } = require('prosemirror-model');
const doc = Node.fromJSON(mySchema, {
type: 'doc',
content: [
{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, world!' }] }
]
});
Manipulating Nodes
This feature allows you to manipulate nodes within the document. You can create new nodes, copy existing nodes, and create fragments of nodes.
const { Fragment } = require('prosemirror-model');
const paragraph = mySchema.nodes.paragraph.createAndFill();
const textNode = mySchema.text('New text');
const newParagraph = paragraph.copy(Fragment.from(textNode));
Slate is another framework for building rich text editors. It provides a more flexible and less opinionated approach compared to ProseMirror. While ProseMirror uses a schema-based approach to define the document structure, Slate allows for more dynamic and custom data models.
Draft.js is a framework for building rich text editors developed by Facebook. It uses a content state model to represent the document and provides a set of immutable data structures for manipulating the content. Draft.js is more opinionated and less flexible compared to ProseMirror, but it integrates well with React.
Quill is a rich text editor that provides a simple and easy-to-use API. It is less flexible compared to ProseMirror and Slate, but it is very easy to set up and use. Quill is suitable for applications that need a basic rich text editor without much customization.
[ WEBSITE | ISSUES | FORUM | GITTER | CHANGELOG ]
ProseMirror is a well-behaved rich semantic content editor based on contentEditable, with support for collaborative editing and custom document schemas.
This module implements ProseMirror's document model, along with the mechanisms needed to support schemas.
The project page has more information, a number of demos and the documentation.
NOTE: This project is in BETA stage. It isn't thoroughly tested,
and the API might still change across 0.x
releases. You are welcome
to use it, but don't expect it to be very stable yet.
This code is released under an MIT license. There's a forum for general discussion and support requests, and the Github bug tracker is the place to report issues.
0.22.0 (2017-06-29)
When using parseSlice
, inline DOM content wrapped in block elements for which no parse rule is defined will now be properly wrapped in a textblock node.
Resolved positions now have a doc
accessor to easily get their root node.
Parse rules now support a namespace
property to match XML namespaces.
The NodeRange
constructor is now public (whereas before you could only construct these through blockRange
).
FAQs
ProseMirror's document model
The npm package prosemirror-model receives a total of 1,030,968 weekly downloads. As such, prosemirror-model popularity was classified as popular.
We found that prosemirror-model demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.